package cn.juque.systemservice.api.provider;

import cn.juque.common.base.BaseResponseDTO;
import cn.juque.systemservice.api.dto.employee.*;

import java.util.List;

/**
 * @author JUQUE
 * @version 1.0.0
 * <ul>
 *  <li>simple-generator</li>
 *  <li>员工信息</li>
 * </ul>
 * @date 2022-11-03 12:09:41
 **/
public interface IEmployeeInfoProvider {

    /**
     * 列表检索
     *
     * @param searchDTO 入参
     * @return List
     */
    BaseResponseDTO<List<EmployeeInfoListDTO>> list(EmployeeInfoSearchDTO searchDTO);

    /**
     * 获取员工信息
     * @param req 入参
     * @return list
     */
    BaseResponseDTO<List<EmployeeInfoDetailDTO>> getByUserId(EmployeeInfoSearchByUserIdDTO req);

    /**
     * 获取员工信息
     * @param req 入参
     * @return list
     */
    BaseResponseDTO<List<EmployeeInfoDetailDTO>> getByIdList(EmployeeInfoSearchByIdDTO req);

    /**
     * 获取员工信息
     * @param req 入参
     * @return list
     */
    BaseResponseDTO<List<EmployeeInfoDetailDTO>> getByRoleIdList(EmployeeInfoSearchByRoleDTO req);

    /**
     * 详情
     *
     * @param id 主键
     * @return EmployeeInfoDetailDTO
     */
    BaseResponseDTO<EmployeeInfoDetailDTO> detail(String id);

    /**
     * 操作人详情
     *
     * @param requestDTO 操作信息
     * @return EmployeeInfoDetailDTO
     */
    BaseResponseDTO<EmployeeInfoDetailDTO> getByOperator(EmployeeCurrentParamDTO requestDTO);

    /**
     * 获取员工密码
     * @param req 入参
     * @return EmployeeInfoDetailDTO
     */
    BaseResponseDTO<EmployeePasswordResultDTO> getPassword(EmployeePasswordParamDTO req);

    /**
     * 新增
     *
     * @param addDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> add(EmployeeInfoAddDTO addDTO);

    /**
     * 更新
     *
     * @param updateDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> update(EmployeeInfoUpdateDTO updateDTO);

    /**
     * 更新密码
     * @param req UpdatePasswordDTO
     * @return  Boolean
     */
    BaseResponseDTO<Boolean> updatePassword(EmployeeUpdatePasswordDTO req);

    /**
     * 删除
     *
     * @param deleteDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> delete(EmployeeInfoDeleteDTO deleteDTO);

}
